#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
企业微信群机器人应用启动文件
"""

import os
import sys
import threading
import time
from flask import Flask
from dotenv import load_dotenv

# 导入配置和核心模块
from config.settings import settings
from core.bot import WeChatBot
from handlers.webhook_routes import WebhookRoutes
from utils.logger import setup_logging

# 加载环境变量
load_dotenv()

# 设置环境变量
def setup_environment():
    """设置环境变量"""
    print("🔧 正在配置环境变量...")
    
    # 从配置文件获取环境变量
    env_vars = settings.get_env_vars()
    
    for key, value in env_vars.items():
        if not os.getenv(key):
            os.environ[key] = value
            print(f"✅ 已设置 {key}")
    
    print("✅ 环境变量配置完成")

def auto_switch_checker(bot):
    """
    定时检查所有会话的自动转回状态
    
    Args:
        bot: WeChatBot实例
    """
    print("⏰ 启动自动转回检查定时任务...")
    
    while True:
        try:
            # 每5分钟检查一次所有会话
            time.sleep(300)  # 5分钟 = 300秒
            
            # 检查所有会话的自动转回状态
            switched_customers = bot.conversation_manager.check_all_sessions_auto_switch()
            
            if switched_customers:
                print(f"🔄 定时检查：已自动转回 {len(switched_customers)} 个客户到AI服务")
                for customer_id in switched_customers:
                    print(f"   - 客户 {customer_id} 已转回AI服务")
            else:
                print("⏰ 定时检查：暂无需要转回的客户")
                
        except Exception as e:
            print(f"❌ 自动转回检查任务出错: {str(e)}")

# 立即设置环境变量
setup_environment()

# 加载配置
settings.load_from_env()

# 创建Flask应用
app = Flask(__name__)

# 设置日志
setup_logging()

# 创建机器人实例
bot = WeChatBot()

# 注册路由
routes = WebhookRoutes(app, bot)

def main():
    """主函数"""
    print("🤖 企业微信群机器人启动中... (重构版本)")
    
    print("✅ 配置系统已加载")
    print("✅ AI API 已配置")
    print("✅ WEBHOOK_URL 已配置")
    print("✅ 企业微信加解密配置已设置")
    print("✅ 企业微信API模块已加载")
    print("✅ 消息处理模块已加载")
    print("✅ Webhook路由模块已加载")
    
    # 启动自动转回检查定时任务
    auto_switch_thread = threading.Thread(
        target=auto_switch_checker, 
        args=(bot,), 
        daemon=True
    )
    auto_switch_thread.start()
    print("✅ 自动转回检查定时任务已启动")
    
    print(f"🌐 服务地址: http://{bot.config.HOST}:{bot.config.PORT}")
    print(f"📡 Webhook地址: {bot.config.WEBHOOK_URL}")
    print("🚀 机器人已启动，等待消息...")
    
    # 启动Flask应用
    app.run(
        host=bot.config.HOST,
        port=bot.config.PORT,
        debug=False
    )

if __name__ == '__main__':
    main() 